Hibernate-এ ক্যাশিং একটি গুরুত্বপূর্ণ কৌশল যা ডেটাবেজ অ্যাক্সেস কমিয়ে পারফরম্যান্স বৃদ্ধি করে। Hibernate দুটি স্তরের ক্যাশিং প্রদান করে:
- প্রথম স্তরের ক্যাশ (First-Level Cache): Hibernate নিজেই এটি পরিচালনা করে, যা ডিফল্টভাবে সক্রিয় থাকে।
- দ্বিতীয় স্তরের ক্যাশ (Second-Level Cache): এটি একটি ঐচ্ছিক ক্যাশিং স্তর, যা কাস্টম ক্যাশিং ফ্রেমওয়ার্কের মাধ্যমে পরিচালিত হয়, যেমন EhCache এবং Hazelcast।
Hibernate-এ EhCache Integration
EhCache হলো একটি উচ্চ পারফরম্যান্স, ওপেন-সোর্স ক্যাশিং সল্যুশন যা Hibernate-এর দ্বিতীয় স্তরের ক্যাশিং পরিচালনার জন্য ব্যবহার করা হয়।
১. Maven ডিপেনডেন্সি যুক্ত করা
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.x.x</version>
</dependency>
২. Hibernate কনফিগারেশন
application.properties ফাইলে EhCache সক্রিয় করার জন্য নিম্নলিখিত কনফিগারেশন যোগ করুন:
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
spring.jpa.properties.javax.cache.provider=org.ehcache.jsr107.EhcacheCachingProvider
৩. ehcache.xml ফাইল তৈরি
EhCache এর কনফিগারেশন ফাইল তৈরি করুন:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.ehcache.org/v3"
xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd">
<cache alias="default">
<expiry>
<ttl unit="seconds">600</ttl>
</expiry>
<heap unit="entries">1000</heap>
</cache>
</config>
৪. Entity ক্লাসে ক্যাশিং সক্রিয় করা
Entity ক্লাসে ক্যাশিং এনাবল করতে @Cache অ্যানোটেশন ব্যবহার করুন:
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Double price;
// Getters and Setters
}
Hibernate-এ Hazelcast Integration
Hazelcast হলো একটি ডিস্ট্রিবিউটেড ইন-মেমোরি ডেটা গ্রিড, যা ক্যাশিং এবং ক্লাস্টারিং সমর্থন করে। এটি Hibernate-এর দ্বিতীয় স্তরের ক্যাশিংয়ের জন্য ব্যবহার করা যেতে পারে।
১. Maven ডিপেনডেন্সি যুক্ত করা
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast-hibernate5</artifactId>
<version>2.x.x</version>
</dependency>
<dependency>
<groupId>com.hazelcast</groupId>
<artifactId>hazelcast</artifactId>
<version>5.x.x</version>
</dependency>
২. Hibernate কনফিগারেশন
application.properties ফাইলে Hazelcast সক্রিয় করার জন্য নিম্নলিখিত কনফিগারেশন যোগ করুন:
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=com.hazelcast.hibernate.HazelcastCacheRegionFactory
৩. Hazelcast Configuration ফাইল
Hazelcast এর জন্য একটি কনফিগারেশন ফাইল তৈরি করুন:
import com.hazelcast.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HazelcastConfig {
@Bean
public Config hazelcastConfig() {
Config config = new Config();
config.setInstanceName("hazelcast-instance")
.getMapConfig("default")
.setTimeToLiveSeconds(600);
return config;
}
}
৪. Entity ক্লাসে ক্যাশিং সক্রিয় করা
Entity ক্লাসে ক্যাশিং চালু করতে @Cache ব্যবহার করুন:
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String productName;
private Integer quantity;
// Getters and Setters
}
EhCache এবং Hazelcast এর তুলনা
| বৈশিষ্ট্য | EhCache | Hazelcast |
|---|---|---|
| উপস্থিতি | একক নোড বা ডিস্ট্রিবিউটেড | ডিস্ট্রিবিউটেড (ক্লাস্টার সমর্থন) |
| পারফরম্যান্স | ছোট এবং স্থানীয় ক্যাশের জন্য উপযুক্ত | বড় ও ডিস্ট্রিবিউটেড সিস্টেমে কার্যকর |
| ক্লাস্টারিং সমর্থন | সীমিত বা অতিরিক্ত কনফিগারেশন প্রয়োজন | বিল্ট-ইন ক্লাস্টারিং সমর্থন |
| সহজতা | সহজ এবং হালকা | কনফিগারেশন একটু জটিল |
| ব্যবহারক্ষেত্র | ছোট অ্যাপ্লিকেশন | বড় স্কেল ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন |
সারসংক্ষেপ
Hibernate-এ EhCache এবং Hazelcast এর ইন্টিগ্রেশন ডেটাবেজ অ্যাক্সেস অপটিমাইজ করে এবং অ্যাপ্লিকেশনের পারফরম্যান্স বৃদ্ধি করে।
- EhCache সহজ এবং হালকা ক্যাশিং সল্যুশন, যা একক নোডের জন্য উপযুক্ত।
- Hazelcast একটি শক্তিশালী ডিস্ট্রিবিউটেড ক্যাশিং সিস্টেম, যা বড় স্কেল অ্যাপ্লিকেশনের জন্য আদর্শ।
ব্যবহারক্ষেত্র অনুযায়ী সঠিক ক্যাশিং সমাধান নির্বাচন করলে অ্যাপ্লিকেশনের কার্যক্ষমতা উল্লেখযোগ্যভাবে বৃদ্ধি পায়।
Read more